package com.qqt.csr.route.dto.resp;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.qqt.csr.common.acl.aics.resp.CsMemberInfoDTO;
import com.qqt.csr.route.entity.RouteTask;
import lombok.*;
import lombok.experimental.Accessors;

import java.io.Serial;
import java.io.Serializable;

@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
@JsonIgnoreProperties(ignoreUnknown = true)
public class RouteResultDTO implements Serializable {
    @Serial
    private static final long serialVersionUID = 9136135964671982941L;

    /**
     * 失败原因：0：无，1：不在服务时间，2：不在业务服务时间，3：达到业务选择错误次数上限，4：出队无坐席
     */
    public static final Integer FAIL_NOT_MATCHED_TIME = 1;
    public static final Integer FAIL_NOT_MATCHED_BIZ_TIME = 2;
    public static final Integer FAIL_SELECTED_BIZ_ERROR_LIMIT = 3;
    public static final Integer FAIL_OUT_QUEUE_NOT_SEAT = 4;

    /**
     * 路由任务信息
     */
    private RouteTaskDTO routeTaskDTO;

    /**
     * 技能组配置
     */
    private SkillSetDTO skillSetDTO;

    /**
     * 接待客服
     */
    private CsMemberInfoDTO csInfo;

    /**
     * 失败原因：0：无，1：不在服务时间，2：不在业务服务时间，3：达到业务选择错误次数上限，4：出队无坐席
     */
    @Builder.Default
    private Integer failReason = 0;

    /**
     * 回复内容
     */
    private String content;


    public static RouteResultDTO of(RouteTask routeTask, String content, CsMemberInfoDTO csInfo) {
        return RouteResultDTO.builder()
                .routeTaskDTO(RouteTaskDTO.of(routeTask))
                .content(content)
                .skillSetDTO(routeTask.getSkillSet())
                .csInfo(csInfo)
                .build();
    }
}
